import router from "./router";
import NProgress from "nprogress";

import { ElMessage } from "element-plus";
/**
 * 全局前置导航守卫
 * 作用: 拦截处理
 * to: 到达路由
 * from: 出发路由
 *
 *
 *  登录认证
 *      => 在没有登录的情况下，不允许访问需要登录才能访问的页面，如后台管理系统的主界面
 *      => 实现
 *          1. 直接放行不需要认证的路由
 *             const whiteArr = ['/','/login']
 *             获取当前路径，如果在白名单中直接放行
 *         2. 登录认证
             如果已经登录放行,没有登录跳转到登录界面

 *  加载进度效果
 *        => NProgress
 *         => 
 */
const whiteArr = ["/", "/404", "/login", "/erpLogin", "/PDF_preview"]; // 白名单
router.beforeEach((to) => {
  // 1.NProgress 开始
  NProgress.start();
  //   console.log("beforeEach next=======>>>>>>>>", next);
  // console.log('beforeEach fullPath beforeEach fullPath=======>>>>>>>>', to.fullPath)
  // console.log('beforeEach fullPath beforeEach fullPath=======>>>>>>>>', to)
  //  1. 直接放行不需要认证的路由
  const isOk = whiteArr.some((item) => item === to.path);
  if (isOk) {
    return true; // 放行
  }

  // 2. 登录认证
  // 如果已经登录放行,没有登录跳转到登录界面
  const token = localStorage.getItem("TOKEN");
  if (token) {
    return true; // 放行
  } else {
    if (localStorage.getItem("isShop") == "true") {
      // window.location.reload(); //刷新页面跳转回登录页面
      ElMessage.error("请登录");
      // 重定向登录界面
      return { path: "/login" };
    } else if (localStorage.getItem("isShop") == "false") {
      ElMessage.error("请登录");
      // 重定向登录界面
      return { path: "/erpLogin" };
    }
  }
  // return false // 阻止路由跳转
});

/**
 * 全局后置导航守卫
 */
// router.beforeEach((to, from) => {
//     NProgress.done()
// })
router.afterEach((to, from) => {
  NProgress.done();
});
